home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2008 September
/
PCWorld_2008-09_cd.bin
/
domacnost a kancelar
/
joomla
/
Joomla_1.5.4-Stable-Full_Package.exe
/
plugins
/
system
/
cache.php
< prev
next >
Wrap
PHP Script
|
2008-07-06
|
3KB
|
115 lines
<?php
/**
* @version $Id: cache.php 10381 2008-06-01 03:35:53Z pasamio $
* @package Joomla
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
/**
* Joomla! Page Cache Plugin
*
* @author Johan Janssens <johan.janssens@joomla.org>
* @package Joomla
* @subpackage System
*/
class plgSystemCache extends JPlugin
{
var $_cache = null;
/**
* Constructor
*
* For php4 compatability we must not use the __constructor as a constructor for plugins
* because func_get_args ( void ) returns a copy of all passed arguments NOT references.
* This causes problems with cross-referencing necessary for the observer design pattern.
*
* @access protected
* @param object $subject The object to observe
* @param array $config An array that holds the plugin configuration
* @since 1.0
*/
function plgSystemCache(& $subject, $config)
{
parent::__construct($subject, $config);
$user =& JFactory::getUser();
$options = array(
'cachebase' => JPATH_BASE.DS.'cache',
'defaultgroup' => 'page',
'lifetime' => $this->params->get('cachetime', 15) * 60,
'browsercache' => $this->params->get('browsercache', false),
'caching' => false
);
jimport('joomla.cache.cache');
$this->_cache =& JCache::getInstance( 'page', $options );
if (!$user->get('aid') && $_SERVER['REQUEST_METHOD'] == 'GET') {
$this->_cache->setCaching(true);
}
}
/**
* Converting the site URL to fit to the HTTP request
*
*/
function onAfterInitialise()
{
global $mainframe, $_PROFILER;
if($mainframe->isAdmin() || JDEBUG) {
return;
}
$data = $this->_cache->get();
if($data !== false)
{
// the following code searches for a token in the cached page and replaces it with the
// proper token.
$user = &JFactory::getUser();
$token = JUtility::getToken();
$search = '#<input type="hidden" name="[0-9a-f]{32}" value="1" />#';
$replacement = '<input type="hidden" name="'.$token.'" value="1" />';
$data = preg_replace( $search, $replacement, $data );
JResponse::setBody($data);
echo JResponse::toString($mainframe->getCfg('gzip'));
if(JDEBUG)
{
$_PROFILER->mark('afterCache');
echo implode( '', $_PROFILER->getBuffer());
}
$mainframe->close();
}
}
function onAfterRender()
{
global $mainframe;
if($mainframe->isAdmin() || JDEBUG) {
return;
}
$this->_cache->store();
}
}